#pragma once
#include<chrono>
#include <utility>
#include<vector>
#include "BScanImage.h"
struct BScan
{
	std::chrono::system_clock::time_point timeStamp;
	std::vector<float> data;
	size_t depth_size= 0;
	std::wstring file_name;
	BScanImage* image=nullptr;
	BScan() {}
	~BScan() {
		data.clear();
	}
	BScan(float* data, size_t size, size_t depth_size, BScanImage &image,std::wstring file_name) :
		data(std::vector<float>(data, data + size)),depth_size(depth_size),image(&image),file_name(std::move(file_name))
	{
		timeStamp = std::chrono::system_clock::now();
	}
	BScan(std::vector<float>&& bscan_data, size_t depth_size, BScanImage &image, std::wstring file_name) :
		data(std::move(bscan_data)), depth_size(depth_size), image(&image), file_name(std::move(file_name))
	{
		timeStamp = std::chrono::system_clock::now();
	}
};


struct Ascan
{
    std::chrono::system_clock::time_point timeStamp;
    std::vector<float> data;
    Ascan() {}
    ~Ascan() { 
        data.clear(); 
    }
    Ascan(float* data, size_t size) :
        data(std::vector<float>(data, data + size))
    {
        timeStamp = std::chrono::system_clock::now();
    }
};

struct FFTdata
{
    std::chrono::system_clock::time_point timeStamp;
    std::vector<float> real;
    std::vector<float> imaginary;
    FFTdata() {}
    FFTdata(float* realdata ,float* imaginedata, size_t size) :
        real(std::vector<float>(realdata, realdata + size)),
        imaginary(std::vector<float>(imaginedata, imaginedata + size))
    {
        timeStamp = std::chrono::system_clock::now();
    }
};

struct Rawdata
{
    std::chrono::system_clock::time_point timeStamp;
    std::vector<uint16_t> ch1;
    std::vector<uint16_t> ch2;
    Rawdata() {}
    Rawdata(uint16_t* ch1data, uint16_t* ch2data,size_t size) :
        ch1(std::vector<uint16_t>(ch1data, ch1data + size)),
        ch2(std::vector<uint16_t>(ch2data, ch2data + size))
    {
        timeStamp = std::chrono::system_clock::now();
    }
};

struct ResamplingData
{
    std::chrono::system_clock::time_point timeStamp;
    std::vector<uint16_t> data;
    ResamplingData() {}
    ResamplingData(uint16_t* data, size_t size) :
        data(std::vector<uint16_t>(data, data + size))
    {
        timeStamp = std::chrono::system_clock::now();
    }
};